package com.example.demo.controller;

import com.example.demo.entity.*;
import com.example.demo.service.IndustrialIndicatorsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 工业指标
 */
@RestController
@RequestMapping("/industrialIndicators")
public class IndustrialIndicatorsController {
    @Autowired
    IndustrialIndicatorsService industrialIndicatorsService;

    /**
     * 分区镇规上工业总产值
     *
     * @param year(int) 年份, month(int) 月份
     *@return
     * List集合（SubDistrictTownIndustry类）
     *                {id
     *                 indicators
     *                 thisMonth
     *                 accumulate
     *                 monthOnMonth
     *                 ratio 规上占比
     *                 growthRanking 增速排名
     *                 statisticalTime
     *                 year
     *                 month}
     *
     */
    @GetMapping("/getSubDistrictTownIndustry")
    @CrossOrigin
    public List<SubDistrictTownIndustry> getSubDistrictTownIndustry(@RequestParam int year, @RequestParam int month) {
        return industrialIndicatorsService.getSubDistrictTownIndustry(year,month);
    }


    /**
     * 工业总产值
     * 规上工业总产值
     * 综合能源消费量（吨标准煤）
     * 规上工业用电量（万千瓦时）
     * 万元产值能耗（吨标准煤/万元）
     *
     * @param year(int) 年份, indicators(String) 指标
     *@return
     * List集合（IndustrialEconomicIndicators类）
     *                {id
     *                 indicators
     *                 thisMonth
     *                 accumulate
     *                 monthOnMonth
     *                 statisticalTime
     *                 year
     *                 month}
     *
     */
    @GetMapping("/getIndustrialIndicatorsByIndicators")
    @CrossOrigin
    public List<IndustrialEconomicIndicators> getIndustrialIndicatorsByIndicators(@RequestParam int year, @RequestParam String indicators) {
        return industrialIndicatorsService.getIndustrialIndicatorsByIndicators(year,indicators);
    }


    /**
     *高新技术产业产值
     *
     * @param year(int) 年份
     *@return
     * List集合（HighTechIndustry类）
     *                {id
     *                 thisMonth
     *                 accumulate
     *                 monthOnMonth
     *                 HighTechRatio 高新占比
     *                 statisticalTime
     *                 year
     *                 month}
     *
     */
    @GetMapping({"/getHighTechIndustry"})
    @CrossOrigin
    public List<HighTechIndustry> getHighTechIndustry(@RequestParam int year) {
        return industrialIndicatorsService.getHighTechIndustry(year);
    }

    /**
     *头标：当月及当月累计
     *
     * @param year(int) 年份, month(int) 月份, indicators(String) 指标
     *@return
     * IndustrialEconomicIndicators类
     *                {id
     *                 indicators 指标
     *                 thisMonth 当月
     *                 accumulate 当月累计
     *                 monthOnMonth 同比
     *                 statisticalTime 日期
     *                 year 年
     *                 month 月}
     *
     */
    @GetMapping("/getMonthProduct")
    @CrossOrigin
    public IndustrialEconomicIndicators getMonthProduct(@RequestParam int year, @RequestParam int month, @RequestParam String indicators) {
        return industrialIndicatorsService.getMonthProduct(year, month, indicators);
    }


    /**
     * 规模以上工业分行业产值
     * @param year 年份，month 月份
     *@return List<SectorProduct>
     *                {
     *                 number 序号 √
     *                 sectorName 分行业名称 √
     *                 currentMonth 本期当月 √
     *                 currentAccumulate 本期累计 √
     *                 previousAccumulate 同期累计
     *                 monthOnMothAccumulate 累计同比 √
     *                 }
     * √为前端需要的数据
     */
    @GetMapping("/getSectorProduct")
    @CrossOrigin
    public List<SectorProduct> getSectorProduct(@RequestParam int year, @RequestParam int month) {
        return industrialIndicatorsService.getSectorProduct(year, month);
    }


    /**
     * 重点工业企业产值完成情况（同一集团企业）
     * @param year 年份，month 月份
     *@return List<KeyEnterprisesProduct>
     *                {
     *                 number 序号 √  (作为总体的集团才有序号，所属集团的公司的序号为0）
     *                 name 单位名称 √
     *                 currentMonth 本期当月 √
     *                 currentAccumulate 本期累计 √
     *                 previousAccumulate 同期累计
     *                 monthOnMothAccumulate 累计同比 √
     *                 group 归属集团
     *                 judicialPerson 所属法人
     *                 }
     * √为前端需要的数据
     */
    @GetMapping("/getKeyEnterprisesProductByGroup")
    @CrossOrigin
    public List<KeyEnterprisesProduct> getKeyEnterprisesProductByGroup(@RequestParam int year, @RequestParam int month) {
        return industrialIndicatorsService.getKeyEnterprisesProductByGroup(year, month);
    }

    /**
     * 重点工业企业产值完成情况（同一法人企业）
     * @param year 年份，month 月份
     *@return List<KeyEnterprisesProduct>
     *                {
     *                 number 序号 √  (作为总体的法人才有序号，所属法人的公司的序号为0）
     *                 name 单位名称 √
     *                 currentMonth 本期当月 √
     *                 currentAccumulate 本期累计 √
     *                 previousAccumulate 同期累计
     *                 monthOnMothAccumulate 累计同比 √
     *                 group 归属集团
     *                 judicialPerson 所属法人
     *                 }
     * √为前端需要的数据
     */
    @GetMapping("/getKeyEnterprisesProductByJudicialPerson")
    @CrossOrigin
    public List<KeyEnterprisesProduct> getKeyEnterprisesProductByJudicialPerson(@RequestParam int year, @RequestParam int month) {
        return industrialIndicatorsService.getKeyEnterprisesProductByJudicialPerson(year, month);
    }

    /**
     * 重点工业企业产值完成情况（单独企业）
     * @param year 年份，month 月份
     *@return List<KeyEnterprisesProduct>
     *                {
     *                 number 序号 √
     *                 name 单位名称 √
     *                 currentMonth 本期当月 √
     *                 currentAccumulate 本期累计 √
     *                 previousAccumulate 同期累计
     *                 monthOnMothAccumulate 累计同比 √
     *                 group 归属集团
     *                 judicialPerson 所属法人
     *                 }
     * √为前端需要的数据
     */
    @GetMapping("/getKeyEnterprisesProductAlone")
    @CrossOrigin
    public List<KeyEnterprisesProduct> getKeyEnterprisesProductAlone(@RequestParam int year, @RequestParam int month) {
        return industrialIndicatorsService.getKeyEnterprisesProductAlone(year, month);
    }
}
